package com.demo.webflux.spring5core.framework.core;

/**单例工厂的顶层设计
 * @author zhangsulei
 *
 */
public interface BeanFactory {

	/**根据beanName从ioc容器中获得一个实例bean<br/>
	 * 依赖注入从这里开始，读取BeanDefinition中的信息，然后通过反射机制创建一个实例并返回<br/>
	 * spring做法是，不会把最原始的对象放出去，会用一个BeanWrapper来进行一次包装<br/>
	 * 装饰器模式：<br/>
	 * 1、保留原来的oop关系<br/>
	 * 2、需要对它进行扩展、增强(为了以后的aop打基础)<br/>
	 * @param beanName
	 * @return
	 * @throws Exception
	 */
	Object getBean(String beanName) throws Exception;

	public Object getBean(Class<?> beanClass) throws Exception;

}
